package visitor;

import arbori.Nod;
import functii.elementare.Constanta;
import functii.elementare.Logaritm;
import functii.elementare.Necunoscuta;
import functii.elementare.Putere;
import functii.elementare.Radical;
import functii.trigonometrice.Cos;
import functii.trigonometrice.Sin;
import operatori.Impartit;
import operatori.Minus;
import operatori.Ori;
import operatori.Plus;

public abstract class Visitor {

	public abstract void visit(Plus p);
	public abstract void visit(Minus m);
	public abstract void visit(Impartit i);
	public abstract void visit(Ori o);
	public abstract void visit(Necunoscuta n);
	public abstract void visit( Constanta c);
	public abstract void visit(Sin s);
	public abstract void visit(Cos c);
	
	
	public void visit(Nod n) {
		if (n instanceof Plus)
			visit((Plus)n);
		else if (n instanceof Minus) 
			visit ((Minus)n);
		else if (n instanceof Ori) 
			visit((Ori)n);
		else if (n instanceof Impartit)
			visit((Impartit)n);
		else if (n instanceof Sin)
			visit((Sin)n);
		else if (n instanceof Cos)
			visit((Cos)n);
		else if (n instanceof Constanta)
			visit((Constanta)n);
		else if (n instanceof Logaritm)
			visit((Logaritm)n);
		else if (n instanceof Necunoscuta)
			visit((Necunoscuta)n);
		else if (n instanceof Putere)
			visit((Putere)n);
		else if (n instanceof Radical)
			visit ((Radical)n);
	}

}
